const express = require('express');
const path = require('path');
const dateFormat = require('dateformat');
const template = require('art-template');
const morgan = require('morgan');
const config = require('config');

//创建网站服务器
const app = express();

//获取系统环境变量
if (process.env.NODE_ENV == 'development'){
    //当前是开发环境
    //将客户端发送到服务器的请求信息打印到控制台中
    app.use(morgan('dev'))
}else{
    //当前是生产环境
}

//用bodyparser处理全部请求
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));

//配置session
const session = require('express-session');
app.use(session({
    secret: 'secret key',
    resave: false,
    saveUninitialized:false,
    cookie: {
        maxAge:24*60*60*1000
    }
}));

//连接数据库
require('./model/connect');
// const User = require('./model/user');

//开放静态资源文件
app.use(express.static(path.join(__dirname,'public')));

//配置express-art-template
app.engine('art',require('express-art-template'));
app.set('views',path.join(__dirname,'views'));
app.set('view engine','art');

//向模板内导入dateformat对象
template.defaults.imports.dateFormat = dateFormat;


//引入路由模块
const home = require('./route/home');
const admin = require('./route/admin');

//拦截请求，判断用户登录状态
app.use('/admin',require('./middleware/loginGuard'));

//绑定路由和请求路径
app.use('/home',home);
app.use('/admin',admin);

//错误处理中间件
// app.use((err,req,res,next)=>{
//     //将字符串转换为对象类型JSON.parse()
//         const result = JSON.parse(err);
//         console.log(err,typeof err);
//         console.log(result,typeof result);
//         let params=[];
//         for(let attr in result){
//             if(attr != 'path'){
//                 params.push(attr + '=' + result[attr]);
//             }
//         }
//         res.redirect(`${result.path}?${params.join('&')}`);
// });

app.listen(3000);
console.log('服务器启动成功')
